Synthesizing cloud stickers

ABSTRACT

Disclosed are systems, methods, and computer-readable storage media to modify image content. One aspect includes identifying, by one or more electronic hardware processors, an image and content within the image, determining, by the one or more electronic hardware processors, a sky region of the image, determining, by the one or more electronic hardware processors, whether the content within the image is located within the sky region of the image, and in response to the content being within the sky region of the image, modifying, by the one or more electronic hardware processors, the content based on fractal Brownian motion.

PRIORITY

This application is a continuation of and claims the benefit of priorityof U.S. patent application Ser. No. 15/820,090, filed Nov. 21, 2017,which is hereby incorporated by reference herein in its entirety.

TECHNICAL FIELD

The present disclosure generally relates to enhancing images within asocial network. More specifically, the present disclosure provides forimproved methods of personalization of images.

BACKGROUND

Social networks provide a variety of creative features to their users.For example, social networks may allow users to capture images andpersonalize the images in a variety of ways. For example, users may beable to add content to their captured images. The added content mayinclude location specific or user specific content. By allowing users topersonalize their images, the social network provides a mechanism forusers to express themselves to others. The ability to express oneself innew and creative ways is an important feature in retaining socialnetwork users. Therefore, improved methods and devices to facilitatecreative expression of social network users are needed.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings, which are not necessarily drawn to scale, like numeralsmay describe similar components in different views. Like numerals havingdifferent letter suffixes may represent different instances of similarcomponents. Some embodiments are illustrated by way of example, and notlimitation, in the figures of the accompanying drawings.

FIG. 1 is a block diagram of one aspect of a messaging system forexchanging data (e.g., messages and associated content) over a network.

FIG. 2 is block diagram illustrating further details regarding themessaging system, according to some embodiments.

FIG. 3A is an example of a data base schema utilized by the messagingsystem of FIG. 1.

FIG. 3B shows example relational database formats that may be used invarious embodiments.

FIG. 4 is a block diagram illustrating functional components of a cloudtexturing system in some embodiments.

FIG. 5 shows an example image, according to some embodiments.

FIG. 6 shows an example image with four additional content added,according to some embodiments.

FIG. 7 shows the example image of FIG. 6 after the additional contenthas been modified to have a cloud-like texture.

FIG. 8 is a data flow diagram illustrating how content may be modifiedto include a cloud texture.

FIG. 9 is a simplified view of a process of combining images.

FIG. 10 is a flowchart of a method of modifying content associated withan image.

FIG. 11 is a flowchart of a method of modifying content associated withan image.

FIG. 12 is a data flow diagram of one exemplary method of training amodel for sky segmentation of an image.

FIG. 13 is a block diagram illustrating an example softwarearchitecture.

FIG. 14 is a block diagram illustrating an example of components of amachine.

DETAILED DESCRIPTION

The description that follows includes systems, methods, techniques,instruction sequences, and computing machine program products thatembody illustrative embodiments of the disclosure. In the followingdescription, for the purposes of explanation, numerous specific detailsare set forth in order to provide an understanding of variousembodiments of the inventive subject matter. It will be evident,however, to those skilled in the art, that embodiments of the inventivesubject matter may be practiced without these specific details. Ingeneral, well-known instruction instances, protocols, structures, andtechniques are not necessarily shown in detail.

Some of the disclosed embodiments provide for automatic modification ofcontent placed, typically by a user, in a sky region of an image. Thecontent may be modified to include a cloud texture in some aspects.Content placed outside the sky region may not be so modified. In someaspects, the content may include a sticker. Stickers may include emoji'sor other graphical resources that may add a creative or communicativemessage to an image. In some aspects, the content may be modified toinclude a cloud-like texture via the use of fractal Brownian motion. Thecontent may first be converted into a grayscale image. The content maythen be blurred to remove sharp edges. After the cloud-like texture isgenerated, it may be combined with the blurred version of the content,for example, by multiplying pixel values in the blurred image withcorresponding pixel values in the cloud-like texture.

In some other aspects, content may be modified to have othercharacteristics based on other regions in which the content is located.For example, in some aspects, the disclosed embodiments may detect othertypes of regions than sky regions, such as water regions, groundregions, or other regions. In some aspects, content placed in theidentified region may be modified in a particular manner based on thetype of region in which the content is placed. For example, in someaspects, content placed in a water region may be modified to have atexture similar to a fish, such as a scaly texture. In some otheraspects, content placed in a region identified as a ground region may bemodified to have a texture resembling rock or gravel.

FIG. 1 is a block diagram showing an example messaging system 100 forexchanging data (e.g., messages and associated content) over a network.The messaging system 100 includes multiple client devices 102, each ofwhich hosts a number of applications including a messaging clientapplication 104. Each messaging client application 104 iscommunicatively coupled to other instances of the messaging clientapplication 104 and a messaging server system 108 via a network 106(e.g., the Internet). As used herein, the term “client device” may referto any machine that interfaces with a communications network (such asthe network 106) to obtain resources from one or more server systems orother client devices. A client device may be, but is not limited to, amobile phone, desktop computer, laptop, portable digital assistant(PDA), smart phone, tablet, ultra book, netbook, laptop, multi-processorsystem, microprocessor-based or programmable consumer electronicssystem, game console, set-top box, or any other communication devicethat a user may use to access a network.

In the example shown in FIG. 1, each messaging client application 104 isable to communicate and exchange data with another messaging clientapplication 104 and with the messaging server system 108 via the network106. The data exchanged between the messaging client applications 104,and between a messaging client application 104 and the messaging serversystem 108, includes functions (e.g., commands to invoke functions) aswell as payload data (e.g., text, audio, video, or other multimediadata).

The network 106 may include, or operate in conjunction with, an ad hocnetwork, an intranet, an extranet, a virtual private network (VPN), alocal area network (LAN), a wireless LAN (WLAN), a wide area network(WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), theInternet, a portion of the Internet, a portion of the Public SwitchedTelephone Network (PSTN), a plain old telephone service (POTS) network,a cellular telephone network, a wireless network, a Wi-Fi® network,another type of network, or a combination of two or more such networks.For example, the network 106 or a portion of the network 106 may includea wireless or cellular network and the connection to the network 106 maybe a Code Division Multiple Access (CDMA) connection, a Global Systemfor Mobile communications (GSM) connection, or another type of cellularor wireless coupling. In this example, the coupling may implement any ofa variety of types of data transfer technology, such as Single CarrierRadio Transmission Technology (1×RTT), Evolution-Data Optimized (EVDO)technology, General Packet Radio Service (GPRS) technology, EnhancedData rates for GSM Evolution (EDGE) technology, third-GenerationPartnership Project (3GPP) including 3G, fourth-generation wireless (4G)networks. Universal Mobile Telecommunications System (UMTS), High-SpeedPacket Access (HSPA), Worldwide Interoperability for Microwave Access(WiMAX). Long-Term Evolution (LTE) standard, or others defined byvarious standard-setting organizations, other long-range protocols, orother data transfer technology.

The messaging server system 108 provides server-side functionality viathe network 106 to a particular messaging client application 104. Whilecertain functions of the messaging system 100 are described herein asbeing performed by either a messaging client application 104 or by themessaging server system 108, it will be appreciated that the location ofcertain functionality either within the messaging client application 104or the messaging server system 108 is a design choice. For example, itmay be technically preferable to initially deploy certain technology andfunctionality within the messaging server system 108, but to latermigrate this technology and functionality to the messaging clientapplication 104 where a client device 102 has a sufficient processingcapacity.

The messaging server system 108 supports various services and operationsthat are provided to the messaging client application 104. Suchoperations include transmitting data to, receiving data from, andprocessing data generated by the messaging client application 104. Thisdata may include message content, client device information, geolocationinformation, media annotation and overlays, message content persistenceconditions, social network information, and live event information, asexamples. Data exchanges within the messaging system 100 are invoked andcontrolled through functions available via user interfaces (UIs) of themessaging client application 104.

Turning now specifically to the messaging server system 108, anApplication Programming Interface (API) server 110 is coupled to, andprovides a programmatic interface to, an application server 112. Theapplication server 112 is communicatively coupled to a database server118, which facilitates access to a database 120 in which is stored dataassociated with messages processed by the application server 112.

The API server 110 receives and transmits message data (e.g., commandsand message payloads) between the client device 102 and the applicationserver 112. Specifically, the API server 110 provides a set ofinterfaces (e.g., routines and protocols) that can be called or queriedby the messaging client application 104 in order to invoke functionalityof the application server 112. The API server 110 exposes variousfunctions supported by the application server 112, including accountregistration; login functionality; the sending of messages, via theapplication server 112, from a particular messaging client application104 to another messaging client application 104; the sending of mediafiles (e.g., images or video) from a messaging client application 104 tothe application server 112, for possible access by another messagingclient application 104; the setting of a collection of media data (e.g.,story); the retrieval of a list of friends of a user of a client device102; the retrieval of such collections; the retrieval of messages andcontent; the adding and deletion of friends to and from a social graph;the location of friends within a social graph; and the detecting of anapplication event (e.g., relating to the messaging client application104).

The application server 112 hosts a number of applications andsubsystems, including a messaging server application 114 and a socialnetwork system 116. The messaging server application 114 implements anumber of message processing technologies and functions, particularlyrelated to the aggregation and other processing of content (e.g.,textual and multimedia content) included in messages received frommultiple instances of the messaging client application 104. As will bedescribed in further detail, the text and media content from multiplesources may be aggregated into collections of content (e.g., calledstories or galleries). These collections are then made available, by themessaging server application 114, to the messaging client application104. Other processor- and memory-intensive processing of data may alsobe performed server-side by the messaging server application 114, inview of the hardware requirements for such processing.

The social network system 116 supports various social networkingfunctions and services, and makes these functions and services availableto the messaging server application 114. To this end, the social networksystem 116 maintains and accesses an entity graph within the database120. Examples of functions and services supported by the social networksystem 116 include the identification of other users of the messagingsystem 100 with whom a particular user has relationships or whom theuser is “following.” and also the identification of other entities andinterests of a particular user.

In at least some of the disclosed embodiments, a user may decorateimages using creative content provided by a social network provider. Forexample, a user may add a content to an existing image. The contentadded to an image may be marketed to the user as a “sticker” which maybe added to an image. A sticker may be, in some aspects, another image,an emoji, or other graphical resource. In some cases, the user may placethe added content (e.g. sticker) in a sky region of an image.Alternatively, the user may place the content (e.g. sticker) in a regionof an image that does not include sky. The disclosed methods and systemsmay modify the added content (e.g. sticker) to include a cloud texturewhen the content is placed in the sky region in some aspects. To modifythe content to include the cloud texture, particular processing of thecontent may be performed. For example, in some aspects, the content maybe converted to grayscale and blurred. The cloud texture may then becombined with the blurred image to form a version of the content havingthe cloud texture.

FIG. 2 is block diagram illustrating further details regarding themessaging system 100, according to exemplary embodiments. Specifically,the messaging system 100 is shown to comprise the messaging clientapplication 104 and the application server 112, which in turn embody anumber of subsystems, namely an ephemeral timer system 202, a collectionmanagement system 204, an annotation system 206, and a cloud texturingsystem 208.

The ephemeral timer system 202 is responsible for enforcing thetemporary access to content permitted by the messaging clientapplication 104 and the messaging server application 114. To this end,the ephemeral timer system 202 incorporates a number of timers that,based on duration and display parameters associated with a message, orcollection of messages (e.g., a SNAPCHAT story, such as the storycomponent 404 discussed below), selectively display and enable access tomessages and associated content via the messaging client application104. Further details regarding the operation of the ephemeral timersystem 202 are provided below.

The collection management system 204 is responsible for managingcollections of media (e.g., collections of text, image, video, and audiodata). In some examples, a collection of content (e.g., messages,including images, video, text, and audio) may be organized into an“event gallery” or an “event story.” Such a collection may be madeavailable for a specified time period, such as the duration of an eventto which the content relates. For example, content relating to a musicconcert may be made available as a “story” for the duration of thatmusic concert. The collection management system 204 may also beresponsible for publishing an icon that provides notification of theexistence of a particular collection to the user interface of themessaging client application 104.

The annotation system 206 provides various functions that enable a userto annotate or otherwise modify or edit media content associated with amessage. For example, the annotation system 206 provides functionsrelated to the generation and publishing of media overlays for messagesprocessed by the messaging system 100. For example, the annotationsystem 206 operatively supplies a media overlay to the messaging clientapplication 104 based on a geolocation of the client device 102. Inanother example, the annotation system 206 operatively supplies a mediaoverlay to the messaging client application 104 based on otherinformation, such as social network information of the user of theclient device 102. A media overlay may include audio and visual contentand visual effects. Examples of audio and visual content includepictures, texts, logos, animations, and sound effects. An example of avisual effect includes color overlaying. The audio and visual content orthe visual effects can be applied to a media content item (e.g., aphoto) at the client device 102. For example, the media overlay mayinclude text that can be overlaid on top of a photograph generated bythe client device 102. In another example, the media overlay includes anidentification of a location (e.g., Venice Beach), a name of a liveevent, or a name of a merchant (e.g., Beach Coffee House). In anotherexample, the annotation system 206 uses the geolocation of the clientdevice 102 to identify a media overlay that includes the name of amerchant at the geolocation of the client device 102. The media overlaymay include other indicia associated with the merchant. The mediaoverlays may be stored in the database 120 and accessed through thedatabase server 118.

In one exemplary embodiment, the annotation system 206 provides auser-based publication platform that enables users to select ageolocation on a map, and upload content associated with the selectedgeolocation. The user may also specify circumstances under which aparticular media overlay should be offered to other users. Theannotation system 206 generates a media overlay that includes theuploaded content and associates the uploaded content with the selectedgeolocation.

In another exemplary embodiment, the annotation system 206 provides amerchant-based publication platform that enables merchants to select aparticular media overlay associated with a geolocation via a biddingprocess. For example, the annotation system 206 associates the mediaoverlay of a highest-bidding merchant with a corresponding geolocationfor a predefined amount of time.

The cloud texturing system 208 may provide for automatic texturing ofcontent added to an image. The automatic texturing may be based, in someaspects, on a location of the content added to the image. For example,in some aspects, the cloud texturing system 208 may identify a skyportion of an image and a non-sky portion of the image. A location ofthe content may then be evaluated to determine if the location is withinthe sky portion or the non-sky portion. If the content is located in thesky portion, a cloud texture may be added to the content. In someaspects, the content may be a sticker.

FIG. 3A is a schematic diagram 300 illustrating data which may be storedin the database 120 of the messaging server system 108, according tocertain example embodiments. While the content of the database 120 isshown to comprise a number of tables, it will be appreciated that thedata could be stored in other types of data structures (e.g., as anobject-oriented database).

The database 120 includes message data stored within a message table614. An entity table 302 stores entity data, including an entity graph304. Entities for which records are maintained within the entity table302 may include individuals, corporate entities, organizations, objects,places, events, etc. Regardless of type, any entity regarding which themessaging server system 108 stores data may be a recognized entity. Eachentity is provided with a unique identifier, as well as an entity typeidentifier (not shown).

The entity graph 304 furthermore stores information regardingrelationships and associations between or among entities. Suchrelationships may be social, professional (e.g., work at a commoncorporation or organization), interested-based, or activity-based,merely for example.

The database 120 also stores annotation data, in the example form offilters, in an annotation table 312. Filters for which data is storedwithin the annotation table 312 are associated with and applied tovideos (for which data is stored in a video table 310) and/or images(for which data is stored in an image table 308). Filters, in oneexample, are overlays that are displayed as overlaid on an image orvideo during presentation to a recipient user. Filters may be of variestypes, including user-selected filters from a gallery of filterspresented to a sending user by the messaging client application 104 whenthe sending user is composing a message. Other types of filters includegeolocation filters (also known as geo-filters), which may be presentedto a sending user based on geographic location. For example, geolocationfilters specific to a neighborhood or special location may be presentedwithin a user interface by the messaging client application 104, basedon geolocation information determined by a Global Positioning System(GPS) unit of the client device 102. Another type of filter is a datafilter, which may be selectively presented to a sending user by themessaging client application 104, based on other inputs or informationgathered by the client device 102 during the message creation process.Examples of data filters include a current temperature at a specificlocation, a current speed at which a sending user is traveling, abattery life for a client device 102, or the current time.

Other annotation data that may be stored within the image table 308 isso-called “lens” data. A “lens” may be a real-time special effect andsound that may be added to an image or a video.

As mentioned above, the video table 310 stores video data which, in oneembodiment, is associated with messages for which records are maintainedwithin the message table 314. Similarly, the image table 308 storesimage data associated with messages for which message data is stored inthe entity table 302. The entity table 302 may associate variousannotations from the annotation table 312 with various images and videosstored in the image table 308 and the video table 310.

A story table 306 stores data regarding collections of messages andassociated image, video, or audio data, which are compiled into acollection (e.g., a SNAPCHAT story or a gallery). The creation of aparticular collection may be initiated by a particular user (e.g., auser for whom a record is maintained in the entity table 302). A usermay create a “personal story” in the form of a collection of contentthat has been created and sent/broadcast by that user. To this end, theuser interface of the messaging client application 104 may include anicon that is user-selectable to enable a sending user to add specificcontent to his or her personal story.

A collection may also constitute a “live story,” which is a collectionof content from multiple users that is created manually, automatically,or using a combination of manual and automatic techniques. For example,a “live story” may constitute a curated stream of user-submitted contentfrom various locations and events. Users whose client devices havelocation services enabled and who are at a common location or event at aparticular time may, for example, be presented with an option, via auser interface of the messaging client application 104, to contributecontent to a particular live story. The live story may be identified tothe user by the messaging client application 104, based on his or herlocation. The end result is a “live story” told from a communityperspective.

A further type of content collection is known as a “location story.”which enables a user whose client device 102 is located within aspecific geographic location (e.g., on a college or university campus)to contribute to a particular collection. In some embodiments, acontribution to a location story may require a second degree ofauthentication to verify that the end user belongs to a specificorganization or other entity (e.g., is a student on the universitycampus).

FIG. 3B illustrates relational database formats for the image table 308,a sticker table 330, and the annotation table 312. Each of theillustrated relational database formats may be utilized in variousembodiments disclosed herein, either alone or in combination. Columns ofthe image table 308 include an image identifier 332 and image data 324.The image identifier 332 uniquely identifies a particular image storedin the image table 308. The image data 324 defines the image having theimage identifier 322. For example, the image data 324 may define pixelvalues for the image having the image identifier 322. Columns in thesticker table 330 include a sticker identifier 332 and initial stickerdata 334. The sticker identifier 332 uniquely identifies a particularsticker. The initial sticker data 334 includes image data (e.g. pixelvalues) for the sticker having the sticker identifier 332. For example,when a sticker having a sticker identifier 332 is initially placed on animage by a user, the sticker may initially be defined by data stored inthe initial sticker data column 334.

The annotation table 312 stores information relating to stickersannotated to images. Columns in the annotation table 312 include anapplied sticker identifier 342, original sticker identifier 344, imageidentifier 346, location information 348, and sticker data 350. Thesticker identifier 342 uniquely identifies an applied sticker. In otherwords, there may be at least a row in the annotation table 312 for everysticker annotated to every image. The original sticker identifier 344identifies a sticker that was originally applied to an image. Forexample, the original sticker identifier 344 may cross reference thesticker identifier 332. The image identifier 346 identifies to whichimage the applied sticker (e.g. applied sticker id 342) has beenapplied. The image identifier 346 may cross reference the image id 322in the image table 308. The location info 348 may store informationindicating a location of the applied sticker (e.g. applied sticker id342) in the image (e.g. image id 346). For example, in some aspects, thelocation info 348 may indicate pixel coordinates of the sticker withinthe image based on an offset from a corner of the image (such as a topleft or bottom left corner for example). The sticker data 350 mayinclude image data (e.g. pixel values) for the sticker (e.g. appliedsticker id 342) as applied to the image (e.g. image id 346). The stickerdata 350 may be initialized based on data stored in the initial stickerdata column 344 of the sticker table 330 in some aspects. The stickerdata 350 may, in some aspects, be later modified to deviate from thedefault sticker definition stored in the initial sticker data 334. Forexample, some embodiments disclosed may modify the sticker data 350 suchthat the sticker includes a cloud-like texture. This may cause thesticker data 350 to change relative to the initial sticker data 334 insome aspects.

FIG. 4 is a block diagram illustrating functional components of thecloud texturing system 208 that forms part of the messaging system 100,according to some example embodiments. To avoid obscuring the inventivesubject matter with unnecessary detail, various functional components(e.g., modules, engines, and databases) that are not germane toconveying an understanding of the inventive subject matter have beenomitted from FIG. 4. However, a skilled artisan will readily recognizethat various additional functional components may be supported by thecloud texturing system 208 to facilitate additional functionality thatis not specifically described herein. As shown, the cloud texturingsystem 208 includes a grayscale component 402, blurring component 404,cloud texture component 406, and a combination component 408.

The above referenced functional components of the cloud texturing system208 are configured to communicate with each other (e.g., via a bus,shared memory, a switch, or APIs). Collectively, these componentsfacilitate selective modification of content, such as stickers, toinclude a cloud texture, based at least in part, on a location of thecontent within an image.

The grayscale component 402 is responsible for modifying content from acolor form to a grayscale form. The grayscale component 402 may receiveas input, content added to an original image. The grayscale component402 may generate as output, a grayscale version of the content. Thecontent may be, in some aspects, a sticker. The content may be, in someaspects, image data. In some aspects, the grayscale component 402 maymeasure an intensity of light at each pixel in the content. Themeasurement may be according to a particular weighted combination offrequencies (or wavelengths), and may be monochromatic when a singlefrequency is captured. The measurement may then be mapped to a grayscalevalue, with higher intensities generally mapping to lighter gray andlighter intensities generally mapping to darker grays, at least in someaspects.

The blurring component 404 may blur the grayscale image generated by thegrayscale component 402. The blurring component 404 may then output ablurred version of the image generated by the grayscale component 402.In some aspects, the blurring component 404 may perform a Gaussian blurto blur the image generated by the grayscale component 402. In someaspects, one or more of a mean filter, a weighted average filter, or aGaussian filter may be utilized to blur the image.

The cloud texture component 406 may generate a cloud texture. In someaspects, the cloud texture component 406 may utilize fractal BrownianMotion (fBM) or simply “fractal noise” to create the cloud pattern, asdiscussed below. In some aspects, the cloud texture may be based onPerlin noise. In some aspects, the cloud texture component 406 mayutilize fractal Brownian Motion (fBM) to wrap a space of a fractalBrownian motion (fBM).

The combination component 408 may combine the blurred content generatedby the blurring component 404 with the cloud texture generated by thecloud texture component 406. The result may be added to the originalimage in some aspects.

As is understood by skilled artisans in the relevant computer andInternet-related arts, each functional component illustrated in FIG. 4may be implemented using hardware (e.g., a processor of a machine) or acombination of logic (e.g., executable software instructions) andhardware (e.g., memory and the processor of a machine) for executing thelogic. For example, any component included as part of the cloudtexturing system 208 may physically include an arrangement of one ormore processors 410 (e.g., a subset of or among one or more processorsof a machine) configured to perform the operations described herein forthat component. As another example, any component of the cloud texturingsystem 208 may include software, hardware, or both, that configure anarrangement of the one or more processors 410 to perform the operationsdescribed herein for that component. Accordingly, different componentsof the cloud texturing system 208 may include and configure differentarrangements of such processors 410 or a single arrangement of suchprocessors 410 at different points in time.

Furthermore, the various functional components depicted in FIG. 4 mayreside on a single machine (e.g., a client device or a server) or may bedistributed across several machines in various arrangements such ascloud-based architectures. Moreover, any two or more of these componentsmay be combined into a single component, and the functions describedherein for a single component may be subdivided among multiplecomponents. Functional details of these components are described belowwith respect to at least FIGS. 5-13.

FIG. 5 shows an image 505. The image 505 may be, in some aspects,captured by an image sensor integrated with a client device 102. In someaspects, the image 505 may be received by a user in another manner. Forexample, the image 505 may be received via a messaging application ordownloaded from the internet.

FIG. 6 shows the image 505 with four additional content 610 a-d added.The content 610 a-d may be added by a user in some aspects. The content610 a-c are shown added to a sky region 620 of the image 505. Thecontent 610 d is added to a non-sky region 630. In some aspects, the skyregion 620 may be identified based on a classifier. The classifier maybe trained using training images providing examples of sky regions andnon-sky regions. Based on the training images, the classifier maysegment the image 505 into the sky region 620 and non-sky region 630.More details on these embodiments are discussed below.

FIG. 7 shows the image 505 after the content 610 a-c has been modifiedto content 710 a-c, which have a cloud-like texture. The content 610 dhas not been modified in the image 505. In some aspects, the content 610a-c may be modified into content 710 a-c in response to their locationsin the image 505 being within the sky region 620. The content 610 d isnot located within the sky region 620 but is instead located within thenon-sky region 630, and therefore may not be modified in a similarmanner to content 610 a-c.

FIG. 8 is a data flow diagram illustrating how content may be modifiedto include a cloud texture. Content 805 may be received, in someaspects, in a color form. In the illustrated embodiment, the content 805is a colored emoji. The content 805 is then transformed into a grayscaleimage 810. As discussed above, the grayscale component 402 may convertthe content 805 into a grayscale version of the content 810. Thegrayscale version 810 may then be blurred to generate the content 815.In some aspects, the blurring may be provided by the blurring component404. A cloud like texture 820 may then be generated. As discussed above,in some aspects, the cloud like texture 820 may be generated usingfractal Brownian Motion. In some aspects, the cloud like texture 820 maybe generated by the cloud texture component 406. FIG. 8 furtherillustrates that the cloud like texture 820 and the blurred image 815are combined to form a modified image 825.

FIG. 9 is a simplified view of a process of combining images. Forexample, in some aspects, the process of combining images illustrated inFIG. 9 may be used to combine the images 815 and 820, discussed abovewith respect to FIG. 8. FIG. 9 illustrates that in some aspects, pixelvalues in a blurred image, such as image 815 discussed above withrespect to FIG. 8, may be multiplied with corresponding pixel values inthe cloud-like texture 815. In some aspects, corresponding pixel valuesmay be located at identical coordinate positions within their respectiveimage data. For example, FIG. 9 shows that pixel values located atposition (2,6) in the images 815 and 820 are multiplied to generate apixel value located at position (2,6) in the combined image 825.Similarly, FIG. 9 shows pixel values located at position (9,1) in theimages 815 and 820 being multiplied to generate a pixel value located atposition (9,1) in the combined image 825. While FIG. 9 shows two samplepixel values being combined in the images 815 and 820, one of skillwould understand that this combination may be repeated for a largerportion or all of the pixel values within the image data 815 and/or 820in various embodiments. In some aspects, the generated cloud-liketexture 820 may not be as large as the content 815. Thus, in someaspects, the cloud-like texture 820 may be replicated as needed to forma cloud-like texture 820 of equivalent size to the content 815.Alternatively, a correspondence between one or more pixel values of thecloud like texture 820 and multiple pixel values of the content 815 maybe created, such that each pixel value in the content 815 may bemultiplied with a corresponding pixel value in the cloud-like texture820, even if there is not a 1:1 correspondence between pixel values ofthe content 815 and cloud-like texture 820.

FIG. 10 is a flowchart of a method of modifying content associated withan image. In some aspects, the content may be added to the image. Forexample, in some aspects, a social network may provide an ability forusers to add content to an image. In some aspects, adding content to animage may be presented to a user as adding a “sticker” to an image. Insome aspects, one or more of the functions discussed below with respectto FIG. 10 may be performed by an electronic hardware processor. Forexample, instructions stored in one or more of the grayscale component402, blurring component 404, cloud texture component 406, and/or thecombination component 408 may configure one or more of the hardwareprocessors 410 to perform one or more of the functions discussed belowwith respect to FIG. 10. In some aspects, one or more of the functionsof process 1000 discussed below may be performed by the processing unit1354. For example, instructions 1304, discussed below with respect toFIG. 13, may configure the processing unit 1354 to perform one or moreof the functions of process 1000 discussed below. In some aspects,instructions 1410, discussed below with respect to FIG. 14, mayconfigure processors 1404 to perform one or more of the functions ofprocess 1000 discussed below.

In block 1005, content for an image is received. For example, asdescribed above with respect to FIGS. 5-8, an image, such as the image505, may include content, such as one or more of the content 610 a-d. Insome aspects, the content may represent a portion of pixel values withinthe image itself, or may be separate from the image. In some aspects,the content may be a sticker that is placed on the image by a user. Forexample, in these aspects, the image may be represented by the imagetable 308, in the form of a row, including the image identifier 322 andimage data 324 in some aspects. The content may be represented by a rowin the annotation table 312 in some aspects. The content may have alocation in the image (e.g. location info 348).

Decision block 1008 determines whether the received content is locatedin a sky portion of the image. In some aspects, block 1008 includessegmenting the image received in block 1005 into at least a sky regionand a non-sky region. In some aspects, this segmentation is provided bya trained classifier, as discussed in more detail below. Block 1008 maydetermine whether a location of the content received in block 1005 iswithin the sky region or the non-sky region. If the content is notlocated in a sky region of the image, process 1000 takes the “No” pathout of block 1008 and processing continues.

Otherwise, process 1000 moves from block 1008 to block 1010, whichconverts the content into grayscale content. The content may be, in someaspects, a sticker. The content may be, in some aspects, image data. Insome aspects, block 1010 may measure an intensity of light at each pixelin the content. The measurement may be according to a particularweighted combination of frequencies (or wavelengths), and may bemonochromatic when a single frequency is captured. The measurement maythen be mapped to a grayscale value, with higher intensities generallymapping to lighter gray and lighter intensities generally mapping todarker grays, at least in some aspects.

In block 1015, the grayscale content is blurred. In various aspects, oneor more of a mean filter, a weighted average filter, or a Gaussianfilter may be utilized to blur the grayscale content. For example, inone aspect, block 1015 may perform a Gaussian blur to blur the grayscalecontent.

In block 1020, a cloud-like texture is generated. The texture may begenerated at a resolution equivalent to a resolution of the content. Insome aspects, block 1020 may utilize fractal Brownian Motion (fBM) orsimply “fractal noise” to create the cloud like texture. In someaspects, the cloud texture may be based on Perlin noise. In someaspects, block 1020 may use fractal Brownian Motion (fBM) to wrap aspace of a fractal Brownian motion (fBM). For example, some embodimentsmay utilize the ZNoise open source library to obtain fbm( ) functions(ZNoise is available on github in 2017). Using ZNoise, a simplecloud-like texture may be obtained via the following code sample:

float pattern ( in vec2 p)  {   vec2 q = vec2 (fbm (p + vec2(0.0, 0.0)),    fbm ( p + vec2 (5.2, 1.3)));   vec2 r = vec2 (fbm (p + 4.0 * q +vec2 (1.7, 9.2)),     fbm ( p + 4.0 * q + vec2 (8.3, 2.8)));   returnfbm (p + 4.0 * r);  }

The particular offset values in the fbm calls above are simple examples,and may vary by embodiment.

In block 1025, the blurred content and the cloud like texture arecombined. In some aspects, the combination may be performed bymultiplying pixel values of the cloud like texture and the blurredcontent. For example, in some aspects, the blurred content and the cloudlike texture may be combined as discussed above with respect to FIG. 9.

Some aspects of process 1000 include displaying the image, andoverlaying the content on the image. For example, the image may bedisplayed on a display of the client device 102 in some aspects. Thelocation of the content on the image may be determined based on locationinformation associated with the content. For example, as discussed abovewith respect to the annotation table 312, location info 348 may bestored for each applied content or sticker. This location informationmay indicate where on the image (e.g. image id 346) the content is to beoverlaid.

FIG. 11 is a flowchart of a method of modifying content associated withan image. In some aspects, the content may be added to the image. Forexample, in some aspects, a social network may provide an ability forusers to add content to an image. In some aspects, adding content to animage may be presented to a user as adding a “sticker” to an image. Insome aspects, one or more of the functions discussed below with respectto FIG. 11 may be performed by an electronic hardware processor. Forexample, instructions stored in one or more of the grayscale component402, blurring component 404, cloud texture component 406, and/or thecombination component 408 may configure one or more of the hardwareprocessors 410 to perform one or more of the functions discussed belowwith respect to FIG. 11. In some aspects, one or more of the functionsof process 1008 discussed below may be performed by the processing unit1354. For example, instructions 1304, discussed below with respect toFIG. 13, may configure the processing unit 1354 to perform one or moreof the functions of process 1008 discussed below. In some aspects,instructions 1410, discussed below with respect to FIG. 14, mayconfigure processors 1404 to perform one or more of the functions ofprocess 1000 discussed below.

In block 1105, an image is segmented in at least sky region and anon-sky region. For example, as discussed above with respect to FIG. 6,the image 505 may be segmented into a sky region 620 and a non-skyregion 630 in some aspects. In some aspects, the segmentation of theimage may be based on a trained classifier. The trained classifier maybe trained based on training images. Based on the training images, thetrained classifier may distinguish between sky regions of the image andnon-sky regions of the image. An example operation of a classifier isdiscussed below with respect to FIG. 12.

Decision block 1110 determines whether the content is within the skyregion or the non-sky region of the image, as discussed above withrespect to block 1008 of FIG. 10 for example.

FIG. 12 is a data flow diagram of one exemplary method of training amodel for sky segmentation of an image. In some aspects, the classifier1230, discussed in more detail below, may identify one or more of thesky region 620 and non-sky region 630, discussed above with respect toFIGS. 6-7. In some aspects, the classifier 1230 may be utilized by block1105, discussed above with respect to FIG. 11, to segment an image intoat least a sky region and a non-sky region. In some aspects, one or moreof the functions and/or dataflows described below with respect todataflow 1200 and FIG. 12 may be performed by the processing unit 1354,discussed below with respect to FIG. 13. For example, instructions 1304,discussed below with respect to FIG. 13, may configure the processingunit 1354 to perform one or more of the data flows and/or functions ofdata flow 1200 discussed below. In some aspects, instructions 1410,discussed below with respect to FIG. 14, may configure processors 1404to perform one or more of the data flows and/or functions of data flow1200 discussed below.

FIG. 12 shows a training database 1202. The training database 1202includes a plurality of training images 1204. Also shown is anannotation database 1206. The annotation database stores annotations1208 that indicate sky portions of images in the training database 1202.The annotation database may also store annotations 1208 that indicatenon-sky portions of images in the training database 1202. In someaspects, the annotation database 1206 may define polygons within thetraining images that represent sky portions, and other polygons withinthe training images that represent non-sky portions (polygons notshown). A model builder 1210 may read the training images 1205 andannotation data 1208 to generate a model database 1220. The modeldatabase 1220 may include data representing characteristics of the skyregions and non-sky regions of the images 1205. For example, in someaspects, the model builder 1210 may apply multiple filters to thetraining images 1205 and generate filter outputs. The filter outputs maybe stored in the model database 1220 in some aspects. The model database1220 may then be utilized to determine sky and non-sky regions in otherimages.

A classifier 1230 may then read the model data 1220 to determine a skyregion and/or a non-sky region in an input image 502. For example, insome aspects, the classifier 1230 may apply various filters to the inputimage 505, and compare filter responses to filter responses stored inthe model data 1220. By identifying similarities between the filterresponses from portions of sky and non-sky portions of the trainingimages 1205, the classifier 1230 may determine a sky region 620 and/or anon-sky region 630 in the input image 505. In some aspects, the dataflow illustrated in FIG. 12 discussed above may be included in block1105 of FIG. 11, or may precede performance of the process 1000,discussed above with respect to FIG. 10.

Software Architecture

FIG. 13 is a block diagram illustrating an example software architecture1306, which may be used in conjunction with various hardwarearchitectures herein described. FIG. 13 is a non-limiting example of asoftware architecture and it will be appreciated that many otherarchitectures may be implemented to facilitate the functionalitydescribed herein. The software architecture 1306 may execute on hardwaresuch as a machine 1400 of FIG. 14 that includes, among other things,processors 1404, memory/storage 1406, and I/O components 1418. Arepresentative hardware layer 1352 is illustrated and can represent, forexample, the machine 1400 of FIG. 14. The representative hardware layer1352 includes a processing unit 1354 having associated executableinstructions 1304. The executable instructions 1304 represent theexecutable instructions of the software architecture 1306, includingimplementation of the methods, components, and so forth describedherein. The hardware layer 1352 also includes memory and/or storage1356, which also have the executable instructions 1304. The hardwarelayer 1352 may also comprise other hardware 1358.

As used herein, the term “component” may refer to a device, a physicalentity, or logic having boundaries defined by function or subroutinecalls, branch points, APIs, and/or other technologies that provide forthe partitioning or modularization of particular processing or controlfunctions. Components may be combined via their interfaces with othercomponents to carry out a machine process. A component may be a packagedfunctional hardware unit designed for use with other components and apart of a program that usually performs a particular function of relatedfunctions.

Components may constitute either software components (e.g., codeembodied on a machine-readable medium) or hardware components. A“hardware component” is a tangible unit capable of performing certainoperations and may be configured or arranged in a certain physicalmanner. In various example embodiments, one or more computer systems(e.g., a standalone computer system, a client computer system, or aserver computer system) or one or more hardware components of a computersystem (e.g., a processor or a group of processors) may be configured bysoftware (e.g., an application or application portion) as a hardwarecomponent that operates to perform certain operations as describedherein. A hardware component may also be implemented mechanically,electronically, or any suitable combination thereof. For example, ahardware component may include dedicated circuitry or logic that ispermanently configured to perform certain operations.

A hardware component may be a special-purpose processor, such as aField-Programmable Gate Array (FPGA) or an Application-SpecificIntegrated Circuit (ASIC). A hardware component may also includeprogrammable logic or circuitry that is temporarily configured bysoftware to perform certain operations. For example, a hardwarecomponent may include software executed by a general-purpose processoror other programmable processor. Once configured by such software,hardware components become specific machines (or specific components ofa machine) uniquely tailored to perform the configured functions and areno longer general-purpose processors. It will be appreciated that thedecision to implement a hardware component mechanically, in dedicatedand permanently configured circuitry, or in temporarily configuredcircuitry (e.g., configured by software) may be driven by cost and timeconsiderations.

A processor may be, or include, any circuit or virtual circuit (aphysical circuit emulated by logic executing on an actual processor)that manipulates data values according to control signals (e.g.,“commands,” “op codes.” “machine code.” etc.) and that producescorresponding output signals that are applied to operate a machine. Aprocessor may, for example, be a Central Processing Unit (CPU), aReduced Instruction Set Computing (RISC) processor, a ComplexInstruction Set Computing (CISC) processor, a Graphics Processing Unit(GPU), a Digital Signal Processor (DSP), an ASIC, a Radio-FrequencyIntegrated Circuit (RFIC), or any combination thereof. A processor mayfurther be a multi-core processor having two or more independentprocessors (sometimes referred to as “cores”) that may executeinstructions contemporaneously.

Accordingly, the phrase “hardware component” (or “hardware-implementedcomponent”) should be understood to encompass a tangible entity, be thatan entity that is physically constructed, permanently configured (e.g.,hardwired), or temporarily configured (e.g., programmed) to operate in acertain manner or to perform certain operations described herein.Considering embodiments in which hardware components are temporarilyconfigured (e.g., programmed), each of the hardware components need notbe configured or instantiated at any one instance in time. For example,where a hardware component comprises a general-purpose processorconfigured by software to become a special-purpose processor, thegeneral-purpose processor may be configured as respectively differentspecial-purpose processors (e.g., comprising different hardwarecomponents) at different times. Software accordingly configures aparticular processor or processors, for example, to constitute aparticular hardware component at one instance of time and to constitutea different hardware component at a different instance of time. Hardwarecomponents can provide information to, and receive information from,other hardware components. Accordingly, the described hardwarecomponents may be regarded as being communicatively coupled. Wheremultiple hardware components exist contemporaneously, communications maybe achieved through signal transmission (e.g., over appropriate circuitsand buses) between or among two or more of the hardware components. Inembodiments in which multiple hardware components are configured orinstantiated at different times, communications between or among suchhardware components may be achieved, for example, through the storageand retrieval of information in memory structures to which the multiplehardware components have access.

For example, one hardware component may perform an operation and storethe output of that operation in a memory device to which it iscommunicatively coupled. A further hardware component may then, at alater time, access the memory device to retrieve and process the storedoutput. Hardware components may also initiate communications with inputor output devices, and can operate on a resource (e.g., a collection ofinformation). The various operations of example methods described hereinmay be performed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implementedcomponents that operate to perform one or more operations or functionsdescribed herein. As used herein. “processor-implemented component”refers to a hardware component implemented using one or more processors.Similarly, the methods described herein may be at least partiallyprocessor-implemented, with a particular processor or processors beingan example of hardware. For example, at least some of the operations ofa method may be performed by one or more processors orprocessor-implemented components.

Moreover, the one or more processors may also operate to supportperformance of the relevant operations in a “cloud computing”environment or as a “software as a service” (SaaS). For example, atleast some of the operations may be performed by a group of computers(as examples of machines including processors), with these operationsbeing accessible via a network (e.g., the Internet) and via one or moreappropriate interfaces (e.g., an API). The performance of certain of theoperations may be distributed among the processors, not only residingwithin a single machine, but deployed across a number of machines. Insome embodiments, the processors or processor-implemented components maybe located in a single geographic location (e.g., within a homeenvironment, an office environment, or a server farm). In otherembodiments, the processors or processor-implemented components may bedistributed across a number of geographic locations.

In the architecture of FIG. 13, the software architecture 1306 may beconceptualized as a stack of layers where each layer provides particularfunctionality. For example, the software architecture 1306 may includelayers such as an operating system 1302, libraries 1320,frameworks/middleware 1318, applications 1316, and a presentation layer1314. Operationally, the applications 1316 and/or other componentswithin the layers may invoke API calls 1308 through the software stackand receive a response as messages 1310. The layers illustrated arerepresentative in nature and not all software architectures have alllayers. For example, some mobile or special-purpose operating systemsmay not provide a frameworks/middleware 1318 layer, while others mayprovide such a layer. Other software architectures may includeadditional or different layers.

The operating system 1302 may manage hardware resources and providecommon services. The operating system 1302 may include, for example, akernel 1322, services 1324, and drivers 1326. The kernel 1322 may act asan abstraction layer between the hardware and the other software layers.For example, the kernel 1322 may be responsible for memory management,processor management (e.g., scheduling), component management,networking, security settings, and so on. The services 1324 may provideother common services for the other software layers. The drivers 1326are responsible for controlling or interfacing with the underlyinghardware. For instance, the drivers 1326 include display drivers, cameradrivers, Bluetooth® drivers, flash memory drivers, serial communicationdrivers (e.g., Universal Serial Bus (USB) drivers). Wi-Fi® drivers,audio drivers, power management drivers, and so forth depending on thehardware configuration.

The libraries 1320 provide a common infrastructure that is used by theapplications 1316 and/or other components and/or layers. The libraries1320 provide functionality that allows other software components toperform tasks in an easier fashion than by interfacing directly with theunderlying operating system 1302 functionality (e.g., kernel 1322,services 1324, and/or drivers 1326). The libraries 1320 may includesystem libraries 1344 (e.g., C standard library) that may providefunctions such as memory allocation functions, string manipulationfunctions, mathematical functions, and the like. In addition, thelibraries 1320 may include API libraries 1346 such as media libraries(e.g., libraries to support presentation and manipulation of variousmedia formats such as MPEG4, H.264. MP3. AAC. AMR. JPG, and PNG),graphics libraries (e.g., an OpenGL framework that may be used to render2D and 3D graphic content on a display), database libraries (e.g.,SQLite that may provide various relational database functions), weblibraries (e.g., WebKit that may provide web browsing functionality),and the like. The libraries 1320 may also include a wide variety ofother libraries 1348 to provide many other APIs to the applications 1316and other software components/modules.

The frameworks/middleware 1318 provide a higher-level commoninfrastructure that may be used by the applications 1316 and/or othersoftware components/modules. For example, the frameworks/middleware 1318may provide various graphic user interface (GUI) functions, high-levelresource management, high-level location services, and so forth. Theframeworks/middleware 1318 may provide a broad spectrum of other APIsthat may be utilized by the applications 1316 and/or other softwarecomponents/modules, some of which may be specific to a particularoperating system 1302 or platform.

The applications 1316 include built-in applications 1338 and/orthird-party applications 1340. Examples of representative built-inapplications 1338 may include, but are not limited to, a contactsapplication, a browser application, a book reader application, alocation application, a media application, a messaging application,and/or a game application. The third-party applications 1340 may includean application developed using the ANDROID™ or IOS™ software developmentkit (SDK) by an entity other than the vendor of the particular platform,and may be mobile software running on a mobile operating system such asIOS™, ANDROID™. WINDOWS® Phone, or other mobile operating systems. Thethird-party applications 1340 may invoke the API calls 1308 provided bythe mobile operating system (such as the operating system 1302) tofacilitate functionality described herein.

The applications 1316 may use built-in operating system functions (e.g.,kernel 1322, services 1324, and/or drivers 1326), libraries 1320, andframeworks/middleware 1318 to create user interfaces to interact withusers of the system. Alternatively, or additionally, in some systemsinteractions with a user may occur through a presentation layer, such asthe presentation layer 1314. In these systems, the application/component“logic” can be separated from the aspects of the application/componentthat interact with a user.

An Example Machine

FIG. 14 is a block diagram illustrating an example of components (alsoreferred to herein as “modules”) of a machine 1400. In some aspects, themachine is configured to read instructions from a machine-readablemedium (e.g., a machine-readable storage medium) and perform any one ormore of the methodologies discussed herein. Specifically, FIG. 11 showsa diagrammatic representation of the machine 1400 in the example form ofa computer system, within which instructions 1410 (e.g., software, aprogram, an application, an applet, an app, or other executable code)for causing the machine 1400 to perform any one or more of themethodologies discussed herein may be executed. As such, theinstructions 1410 may be used to implement modules or componentsdescribed herein. The instructions 1410 transform the general,non-programmed machine 1400 into a particular machine 1400 programmed tocarry out the described and illustrated functions in the mannerdescribed. In alternative embodiments, the machine 1400 operates as astandalone device or may be coupled (e.g., networked) to other machines.In a networked deployment, the machine 1400 may operate in the capacityof a server machine or a client machine in a server-client networkenvironment, or as a peer machine in a peer-to-peer (or distributed)network environment. The machine 1400 may comprise, but not be limitedto, a server computer, a client computer, a personal computer (PC), atablet computer, a laptop computer, a netbook, a set-top box (STB), apersonal digital assistant (PDA), an entertainment media system, acellular telephone, a smart phone, a mobile device, a wearable device(e.g., a smart watch), a smart home device (e.g., a smart appliance),other smart devices, a web appliance, a network router, a networkswitch, a network bridge, or any machine capable of executing theinstructions 1410, sequentially or otherwise, that specify actions to betaken by machine 1400. Further, while only a single machine 1400 isillustrated, the term “machine” shall also be taken to include acollection of machines that individually or jointly execute theinstructions 1410 to perform any one or more of the methodologiesdiscussed herein.

The machine 1400 may include processors 1404, memory/storage 1406, andI/O components 1418, which may be configured to communicate with eachother such as via a bus 1402. The memory/storage 1406 may include amemory 1414, such as a main memory, or other memory storage, and astorage unit 1416, both accessible to the processors 1404 such as viathe bus 1402. The storage unit 1416 and memory 1414 store theinstructions 1410 embodying any one or more of the methodologies orfunctions described herein. The instructions 1410 may also reside,completely or partially, within the memory 1414, within the storage unit1416, within at least one of the processors 1404 (e.g., within theprocessor's cache memory), or any suitable combination thereof, duringexecution thereof by the machine 1400. Accordingly, the memory 1414, thestorage unit 1416, and the memory of the processors 1404 are examples ofmachine-readable media.

As used herein, the term “machine-readable medium,” “computer-readablemedium,” or the like may refer to any component, device, or othertangible medium able to store instructions and data temporarily orpermanently. Examples of such media may include, but are not limited to,random-access memory (RAM), read-only memory (ROM), buffer memory, flashmemory, optical media, magnetic media, cache memory, other types ofstorage (e.g., Electrically Erasable Programmable Read-Only Memory(EEPROM)), and/or any suitable combination thereof. The term“machine-readable medium” should be taken to include a single medium ormultiple media (e.g., a centralized or distributed database, orassociated caches and servers) able to store instructions. The term“machine-readable medium” may also be taken to include any medium, orcombination of multiple media, that is capable of storing instructions(e.g., code) for execution by a machine, such that the instructions,when executed by one or more processors of the machine, cause themachine to perform any one or more of the methodologies describedherein. Accordingly, a “machine-readable medium” may refer to a singlestorage apparatus or device, as well as “cloud-based” storage systems orstorage networks that include multiple storage apparatus or devices. Theterm “machine-readable medium” excludes transitory signals per se.

The I/O components 1418 may include a wide variety of components toprovide a user interface for receiving input, providing output,producing output, transmitting information, exchanging information,capturing measurements, and so on. The specific I/O components 1418 thatare included in the user interface of a particular machine 1400 willdepend on the type of machine. For example, portable machines such asmobile phones will likely include a touch input device or other suchinput mechanisms, while a headless server machine will likely notinclude such a touch input device. It will be appreciated that the I/Ocomponents 1418 may include many other components that are not shown inFIG. 11. The I/O components 1418 are grouped according to functionalitymerely for simplifying the following discussion and the grouping is inno way limiting. In various embodiments, the I/O components 1418 mayinclude output components 1426 and input components 1428. The outputcomponents 1426 may include visual components (e.g., a display such as aplasma display panel (PDP), a light emitting diode (LED) display, aliquid crystal display (LCD), a projector, or a cathode ray tube (CRT)),acoustic components (e.g., speakers), haptic components (e.g., avibratory motor, resistance mechanisms), other signal generators, and soforth. The input components 1428 may include alphanumeric inputcomponents (e.g., a keyboard, a touch screen configured to receivealphanumeric input, a photo-optical keyboard, or other alphanumericinput components), point-based input components (e.g., a mouse, atouchpad, a trackball, a joystick, a motion sensor, or other pointinginstruments), tactile input components (e.g., a physical button, a touchscreen that provides location and/or force of touches or touch gestures,or other tactile input components), audio input components (e.g., amicrophone), and the like. The input components 1428 may also includeone or more image-capturing devices, such as a digital camera forgenerating digital images and/or video.

In further embodiments, the I/O components 1418 may include biometriccomponents 1430, motion components 1434, environment components 1436, orposition components 1438, as well as a wide array of other components.For example, the biometric components 1430 may include components todetect expressions (e.g., hand expressions, facial expressions, vocalexpressions, body gestures, or eye tracking), measure biosignals (e.g.,blood pressure, heart rate, body temperature, perspiration, or brainwaves), identify a person (e.g., voice identification, retinalidentification, facial identification, fingerprint identification, orelectroencephalogram-based identification), and the like. The motioncomponents 1434 may include acceleration sensor components (e.g.,accelerometer), gravitation sensor components, rotation sensorcomponents (e.g., gyroscope), and so forth. The environment components1436 may include, for example, illumination sensor components (e.g.,photometer), temperature sensor components (e.g., one or morethermometers that detect ambient temperature), humidity sensorcomponents, pressure sensor components (e.g., barometer), acousticsensor components (e.g., one or more microphones that detect backgroundnoise), proximity sensor components (e.g., infrared sensors that detectnearby objects), gas sensors (e.g., gas detection sensors to detectconcentrations of hazardous gases for safety or to measure pollutants inthe atmosphere), or other components that may provide indications,measurements, or signals corresponding to a surrounding physicalenvironment. The position components 1438 may include location sensorcomponents (e.g., a GPS receiver component), altitude sensor components(e.g., altimeters or barometers that detect air pressure from whichaltitude may be derived), orientation sensor components (e.g.,magnetometers), and the like.

Communication may be implemented using a wide variety of technologies.The I/O components 1418 may include communication components 1440operable to couple the machine 1400 to a network 1432 or devices 1420via a coupling 1424 and a coupling 1422 respectively. For example, thecommunication components 1440 may include a network interface componentor other suitable device to interface with the network 1432. In furtherexamples, the communication components 1440 may include wiredcommunication components, wireless communication components, cellularcommunication components. Near Field Communication (NFC) components,Bluetooth® components (e.g., Bluetooth® Low Energy), Wi-Fi® components,and other communication components to provide communication via othermodalities. The devices 1420 may be another machine or any of a widevariety of peripheral devices (e.g., a peripheral device coupled via aUSB).

Moreover, the communication components 1440 may detect identifiers orinclude components operable to detect identifiers. For example, thecommunication components 1440 may include Radio Frequency Identification(RFID) tag reader components. NFC smart tag detection components,optical reader components (e.g., an optical sensor to detectone-dimensional bar codes such as Universal Product Code (UPC) bar code,multi-dimensional bar codes such as Quick Response (QR) code. Azteccode, Data Matrix, Dataglyph. MaxiCode, PDF4111, Ultra Code. UCC RSS-2Dbar code, and other optical codes), or acoustic detection components(e.g., microphones to identify tagged audio signals). In addition, avariety of information may be derived via the communication components1440, such as location via Internet Protocol (IP) geo-location, locationvia Wi-Fi® signal triangulation, location via detecting an NFC beaconsignal that may indicate a particular location, and so forth.

Where a phrase similar to “at least one of A. B. or C,” “at least one ofA, B, and C,” “one or more of A, B, or C,” or “one or more of A, B, andC” is used, it is intended that the phrase be interpreted to mean that Aalone may be present in an embodiment, B alone may be present in anembodiment, C alone may be present in an embodiment, or any combinationof the elements A, B. and C may be present in a single embodiment; forexample. A and B. A and C. B and C, or A and B and C may be present.

Changes and modifications may be made to the disclosed embodimentswithout departing from the scope of the present disclosure. These andother changes or modifications are intended to be included within thescope of the present disclosure, as expressed in the following claims.

A portion of the disclosure of this patent document contains materialthat is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction by anyone of the patent documentor the patent disclosure, as it appears in the Patent and TrademarkOffice patent files or records, but otherwise reserves all copyrightrights whatsoever. The following notice applies to the software and dataas described below and in the drawings that form a part of thisdocument:

We claim:
 1. A method of modifying image content, the method comprising:displaying, by one or more electronic hardware processors, an image;determining, by the one or more electronic hardware processors, aspecified region of the image; determining, by the one or moreelectronic hardware processors, whether content has been placed by userinput within the specified region of the image; and in response todetermining that the content was placed by the user input within thespecified region of the image, modifying, by the one or more electronichardware processors, the content to have a texture resembling anattribute of the specified region.
 2. The method of claim 1, wherein thespecified region comprises a sky region of the image, furthercomprising: receiving, by the one or more electronic hardwareprocessors, the user input that places content within the image, whereinthe content is modified to have the texture resembling an attribute ofthe sky region.
 3. The method of claim 1, wherein the specified regioncomprises a water region of the image, and wherein modifying the contentfurther comprises: receiving user input that places the content withinthe water region of the image; and modifying the content to have anothertexture resembling an attribute of the water region.
 4. The method ofclaim 1, further comprising: modifying the content based on a type ofregion in the image within which the content is placed by user input,wherein the content comprises a sticker; and invoking a classifiertrained to segment an image into a sky region and a non-sky region. 5.The method of claim 1, wherein modifying the content comprisesgenerating a cloud-like texture based on fractal Brownian motion.
 6. Themethod of claim 1, wherein modifying the content further comprises:generating a grayscale version of the content; blurring the grayscaleversion of the content; and multiplying pixels of the blurred version ofthe content and pixels of a cloud-like texture to modify the content tohave the cloud-like texture.
 7. The method of claim 1, furthercomprising refraining from modifying the content in response to thecontent being outside the specified region of the image.
 8. The methodof claim 1, wherein the image is defined by image data and the contentis defined by content data separate from the image data, and wherein thecontent is a colored emoji.
 9. The method of claim 1, furthercomprising: overlaying the modified content on the displayed image at adetermined location based on content location information.
 10. Anapparatus for modifying image content, comprising: one or more hardwareprocessors; a hardware memory, operably connected to the hardwareprocessor, and storing instructions that when executed by the one ormore hardware processors, perform operations comprising: displaying animage; determining a specified region of the image; determining whethercontent has been placed by user input within the specified region of theimage; and in response to determining that the content was placed by theuser input within the specified region of the image, modifying thecontent to have a texture resembling an attribute of the specifiedregion.
 11. The apparatus of claim 10, wherein the specified regioncomprises a sky region of the image, further comprising operations for:receiving the user input that places content within the image, whereinthe content is modified to have the texture resembling an attribute ofthe sky region.
 12. The apparatus of claim 10, wherein the specifiedregion comprises a water region of the image, and wherein the operationsfor modifying the content further comprise operations for: receivinguser input that places the content within the water region of the image;and modifying the content to have another texture resembling anattribute of the water region.
 13. The apparatus of claim 10, furthercomprising operations for: modifying the content based on a type ofregion in the image within which the content is placed by user input,wherein the content comprises a sticker; and invoking a classifiertrained to segment an image into a sky region and a non-sky region. 14.The apparatus of claim 10, wherein the operations for modifying thecontent comprise operations for generating a cloud-like texture based onfractal Brownian motion.
 15. The apparatus of claim 10, wherein theoperations for modifying the content further comprise operations for:generating a grayscale version of the content; blurring the grayscaleversion of the content; and multiplying pixels of the blurred version ofthe content and pixels of a cloud-like texture to modify the content tohave the cloud-like texture.
 16. The apparatus of claim 10, furthercomprising operations for refraining from modifying the content inresponse to the content being outside the specified region of the image.17. The apparatus of claim 10, wherein the image is defined by imagedata and the content is defined by content data separate from the imagedata, and wherein the content is a colored emoji.
 18. The apparatus ofclaim 10, further comprising operations for: displaying the image on anelectronic display; and overlaying the modified content on the displayedimage at a determined location based on content location information.19. A non-transitory computer-readable medium comprising non-transitorycomputer readable instructions that, when executed by one or moreprocessors, cause the one or more processors to perform operationscomprising: displaying an image; determining a specified region of theimage; determining whether content has been placed by user input withinthe specified region of the image; and in response to determining thatthe content was placed by the user input within the specified region ofthe image, modifying the content to have a texture resembling anattribute of the specified region.
 20. The non-transitorycomputer-readable medium of claim 19, wherein the specified regioncomprises a sky region of the image, further comprising operations for:receiving the user input that places content within the image, whereinthe content is modified to have the texture resembling an attribute ofthe sky region.